#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ""
__author__ = "Administrator"
__mtime__ = "2016/6/17"
"""
#特性
#经典类特性可读可写，没有只读功能


class Province:

    def __init__(self,name,shenghui,shengzhang):
        self.Name = name
        self.Capital = shenghui
        self.Leader = shengzhang
    @property
    def Bar(self):
        print self.Name

hebei = Province('河北','石家庄','Tom')
shandong = Province('山东','济南','jon')

hebei.Bar   #通过@property可读。
hebei.Bar ='上海'#可写
print hebei.Bar
'''
输出结果：
河北
上海
'''

'''

动态方法  + @property  变成特性。

方法的访问形式变成字段的访问形式--->来访问特性. eg:hebei.Bar

特性主要用来设置返回值,可以print，也可以return。
'''
#新式类中特性是只读的，不可写，如果要可写，需要再创建一个被@xxx.setter装饰的特性

class Parrot(object):
    def __init__(self):
        self._voltage = 1000
    @property
    def voltage(self):
        return self._voltage
    @voltage.setter
    def voltage(self,new_value):
        self._voltage = new_value
if __name__ == '__main__':
    p = Parrot()
    print p.voltage
    p.voltage = 12  # 此时可写
    print p.voltage
'''
输出结果：
1000
    p.voltage = 12
AttributeError: can't set attribute
'''